// 拷贝
let obj = {
  name: '小陈',
  age: 18,
  like: {
    n: '按摩'
  }
}


function deepClone(obj) {
  //不可以写成 obj instanceof Object ? {} : []，因为数组也是对象，如果是数组的话数组也是对象，他还是会变成对象而不是数组
  let clone = obj instanceof Array ? [] : {}// 如果是数组就创建一个数组，如果是对象就创建一个对象
  
  for (let key in obj) {
    //判断 key 是不是 obj 显式拥有
    if (obj.hasOwnProperty(key)) {
      if (typeof obj[key] === 'object' && obj[key] !== null) {
        clone[key] = deepClone(obj[key])// 引用类型就递归
      } else {
        clone[key] = obj[key]// 原始类型直接赋值
      }

      // if (obj[key] instanceof Object) {
      //   clone[key] = deepClone(obj[key])
      // } else {
      //   clone[key] = obj[key]
      // }
    }
  }
  return clone
}
let newObj = deepClone(obj)
obj.like.n = '打球'
console.log(newObj);
